export interface ResGoodsListData {
  YXJSONArray: YXJSONArray;
  global: Global;
  data: GoodsData;
  YXJSONObject: YXJSONArray;
}

export interface GoodsData {
  categoryItems: CategoryItems;
  categoryL2List: CategoryL2List[];
  categoryL1: CategoryL1;
}

interface CategoryL1 {
  id: number;
  superCategoryId: number;
  showIndex: number;
  name: string;
  frontName: string;
  frontNameIcon?: any;
  frontDesc: string;
  bannerUrl: string;
  bannerList?: any;
  iconUrl: string;
  imgUrl?: any;
  level: string;
  subCateList: any[];
  wapBannerUrl: string;
  type: number;
  wapExpandPicTargetUrl?: any;
  categoryType: number;
  extra?: any;
}

interface CategoryL2List {
  id: number;
  superCategoryId: number;
  showIndex: number;
  name: string;
  frontName: string;
  frontNameIcon?: any;
  frontDesc: string;
  bannerUrl?: string;
  bannerList?: any;
  iconUrl?: any;
  imgUrl?: any;
  level: string;
  subCateList: any[];
  wapBannerUrl: string;
  type: number;
  wapExpandPicTargetUrl?: any;
  categoryType: number;
  extra?: any;
}

interface CategoryItems {
  category: Category;
  itemList: ItemList[];
  itemIdList?: any;
}

interface ItemList {
  id: number;
  listPicUrl: string;
  name: string;
  seoTitle?: string;
  simpleDesc: string;
  primaryPicUrl: string;
  primarySkuId: number;
  retailPrice: number;
  counterPrice?: number;
  sortOriginPrice: number;
  status: number;
  rank: number;
  soldOut: boolean;
  underShelf: boolean;
  updateTime: number;
  itemDetail?: any;
  skuList?: any;
  attrList?: any;
  skuMap?: any;
  skuSpecList?: any;
  sellVolume: number;
  reportPicList?: any;
  issueList?: any;
  unitPrice?: any;
  tagList?: any;
  hdrkDetailVOList?: any;
  comments?: any;
  newItemFlag: boolean;
  primarySkuPreSellPrice: number;
  primarySkuPreSellStatus: number;
  pieceNum: number;
  pieceUnitDesc: string;
  colorNum: number;
  limitedFlag: number;
  promId: number;
  preLimitFlag: number;
  gradientPrice?: any;
  productPlace: string;
  remark?: any;
  flashPageLink: string;
  promotionDesc: string;
  specialPromTag: string;
  extraPrice: string;
  appExclusiveFlag: boolean;
  appExclusivePrice?: any;
  promTag?: any;
  tryOutEventReport?: any;
  layawayList?: any;
  itemTagList: ItemTagList[];
  isPreemption: number;
  preemptionStatus: number;
  couponShortNameList?: any;
  promotionSimpleList?: any;
  promotionStatus: number;
  buttonType: number;
  sloganTip?: any;
  showTime: number;
  onSaleTime: number;
  characteristicList?: any;
  itemPromValid: boolean;
  autoOnsaleTime: number;
  autoOnsaleTimeLeft: number;
  displaySkuId: number;
  saleCenterDesc?: any;
  presentUrl?: any;
  saleCenterSkuId: number;
  saleCenterSkuSpec?: any;
  topCommentVO?: any;
  itemType: number;
  adBanners?: any;
  points: number;
  showPoints: boolean;
  pointsPrice: number;
  valueReturnDesc?: any;
  forbidExclusiveCal: boolean;
  commentCount: number;
  commentWithPicCount: number;
  freightInfo?: any;
  itemLimit?: any;
  itemSizeTableFlag: boolean;
  itemSizeTableDetailFlag: boolean;
  itemSizeTableList?: any;
  freeTryVO?: any;
  purchaseRate?: any;
  jumpUrl?: any;
  zcSearchFlag: boolean;
  featuredSeries?: any;
  pointsStatus: number;
  sortFlag: number;
  spmcBanner?: any;
  appFreshmanBannerVO?: any;
  source: number;
  categoryList?: any;
  depositDetailVO?: any;
  scenePicUrl: string;
  couponPrice?: any;
  bonusBanner?: any;
  couponConflict: boolean;
  extraServiceFlag: number;
  forbiddenBuy: boolean;
  forbidBuyDesc?: any;
  bigPromotion?: any;
  spmcOpenGiftItemDesc?: any;
  discountDesc?: any;
  subtractPriceDesc?: any;
  goodCmtRate?: any;
  showCommentEntrance: boolean;
  relatedItemCommentTag?: any;
  rewardDesc?: any;
  categoryL2Id: number;
  promLogo?: any;
  listPromBanner?: any;
  detailPromBanner?: any;
  promoTip?: any;
  rewardShareFlag: boolean;
  shoppingReward?: any;
  shoppingRewardRule?: any;
  promDesc?: any;
  promoTips?: any;
  picMode: number;
  extra?: any;
  recommendReason?: any;
  shieldSpecialChannel: boolean;
  itemDiscountDetail?: any;
  spmcFinalPriceBannerVO?: any;
  buyTitle?: any;
  noticeText?: any;
  skuFreight?: any;
  proDiscount?: any;
  purchaseMethodVO?: any;
  fullRefundPolicy?: any;
  freeTryId: number;
  zoomTransPicV2Url: string;
  monthlySavingCard?: any;
  welfareCardVO?: any;
  brandInfo?: any;
  simpleBrandInfo?: any;
  countryInfo?: any;
  finalPriceInfoVO: FinalPriceInfoVO;
  topLogo: TopLogo;
  preLogo: TopLogo[];
  price?: any;
  banner?: any;
  showPrice: boolean;
  pointTag?: any;
  pointTagExtra?: any;
  pointTagPrefix?: any;
  cpsUser: boolean;
  zc: boolean;
  wapSchemeUrl?: any;
  auctionInfoVO?: any;
  spmcFinalPriceCalcResultBean?: any;
  listProPriceInfoDTO?: any;
}

interface TopLogo {
  logoUrl: string;
  width: number;
  height: number;
  type: number;
}

interface FinalPriceInfoVO {
  banner?: Banner;
  priceInfo: PriceInfo;
  type: number;
}

interface PriceInfo {
  finalPrice?: FinalPrice;
  counterPrice?: string;
  basicPrice?: string;
}

interface FinalPrice {
  prefix?: string;
  price: string;
  suffix?: any;
}

interface Banner {
  logo?: any;
  title?: string;
  price?: Price;
  content: string;
  style: number;
}

interface Price {
  prefix: string;
  price: string;
  suffix?: any;
}

interface ItemTagList {
  type: number;
  subType: number;
  name: string;
  tagId: number;
  itemId: number;
  forbidJump: boolean;
  freshmanExclusive: boolean;
}

interface Category {
  id: number;
  superCategoryId: number;
  showIndex: number;
  name: string;
  frontName: string;
  frontNameIcon?: any;
  frontDesc: string;
  bannerUrl?: any;
  bannerList?: any;
  iconUrl?: any;
  imgUrl?: any;
  level: string;
  subCateList: any[];
  wapBannerUrl: string;
  type: number;
  wapExpandPicTargetUrl?: any;
  categoryType: number;
  extra?: any;
}

interface Global {
  environment: string;
  nickname: string;
  username?: any;
  userid: string;
  cateList: CateList[];
  giftSwitch: boolean;
  miniSwitch: boolean;
  memberLevel: number;
  userNameFront: string;
  kefuInfoVO: KefuInfoVO;
  abtest_dis?: any;
  mobileBindV2Switch: boolean;
}

interface KefuInfoVO {
  onlineKfTitle: string;
  onlineKfContent: string;
  onlineTime: string;
  telTime: string;
}

interface CateList {
  id: number;
  superCategoryId: number;
  showIndex: number;
  name: string;
  frontName?: any;
  frontNameIcon?: any;
  frontDesc?: any;
  bannerUrl?: any;
  bannerList?: any;
  iconUrl?: any;
  imgUrl?: any;
  level?: any;
  subCateList: any[];
  wapBannerUrl?: any;
  type: number;
  wapExpandPicTargetUrl?: any;
  categoryType: number;
  extra?: any;
}

interface YXJSONArray {
  empty: boolean;
}